package com.group4.datafactorybackend.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.group4.datafactorybackend.common.R;
import com.group4.datafactorybackend.entity.DO.DataCriterionDO;
import com.group4.datafactorybackend.entity.DTO.BatchReleaseOrOutageDTO;
import com.group4.datafactorybackend.entity.DTO.DataCriterionDTO;
import com.group4.datafactorybackend.entity.DTO.DataCriterionParameterDTO;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletResponse;

/**
 * @author xin
 * @date 2022/7/27
 * @description 数据标准业务逻辑接口层
 */
public interface DataCriterionService extends IService<DataCriterionDO> {

    /**
     * @author 李泓静
     * @param dcCode 数据标准编号
     * @return R
     * @description 查看数据标准详情
     */
    R<?> getDataCriterionDetail(String dcCode);

    /**
     * @author 邹代鑫
     * @param dcCode 数据标准编号
     * @description 删除数据标准目录
     **/
    void deleteCriterionDetail(String dcCode);

    /**
     * @author 卑微小峰
     * @param batchReleaseOrOutageDTO （批量）发布/停用接收参数实体类
     * @return R
     * @description 发布/停用数据标准
     */
    R<?> releaseOrOutage(BatchReleaseOrOutageDTO batchReleaseOrOutageDTO);

    /**
     * @author 李泓静
     * @param dataCriterion xxx
     * @return int
     * @description 编辑数据标准
     */
     R<?> updateDataCriterion(DataCriterionDO dataCriterion);

    /**
     * @author 邹代鑫
     * @param file 文件
     * @return R
     * @description 导入数据标准
     **/
    R<?> importExcel(MultipartFile file);

    /**
     * @author 章珑赢
     * @param parameterDTO 查询数据标准目录列表接收数据实体类
     * @return R
     * @description 查询数据标准目录列表
     */
    R<?> dataCriterionList(DataCriterionParameterDTO parameterDTO);

    /**
     * @author 章珑赢
     * @param descriptionDTO 新增数据标准表实体类
     * @return R
     * @description 新增数据标准
     */
    R<?> addDataCriterion(DataCriterionDTO descriptionDTO);

    /**
     * @author 邹代鑫
     * @param response 请求响应
     * @return int
     * @description 导出标准表格
     */
    R<?> exportExcel(HttpServletResponse response);
}

